# -*- coding: utf-8 -*-
# @Time    : 2021/4/15 20:42
# @Author  : lilu
# @Email   : 1906196327@qq.com
# @File    : 36个题目.py
# @Software: PyCharm

############ 2.列表去重，排序
# lis = [ 1,2,3,4,3,5,7,9,54,8,4,3,3,3,3,3,3,]
# se = list(set(lis))
# sorted(se,reverse=True)
# print(se)
# print("-"*50)


#############3、如果在一个函数内部修改全局变量
# 答：变量前面添加global


#############4、如何跨模块共享全局变量
#定义跨模块全局变量__global__


##############5、python数据类型有哪些
# 整型、浮点型、布尔型、字符串类型，元组、列表、字典、集合和布尔类型


##############6、python中生成随机整数（1-10），随机小数（1-10），0-1之间小数的方法
# import random
# a = random.randint(1,10)
# b = random.uniform(1,10)
# c = random.random()
# print(f"{a}\n{b}\n{c}\n")
# print("-"*50)


##############7、python2与python3 的区别，列出5个
# 答：见图


###############8、python中哪些是可变数据类型，哪些是不可变数据类型，为什么
# 答：可变：列表、字典，集合
# 答：不可变：数值类型、字符串、元组


################9、统计字符串中每个单词出现的次数
# string.count("a")


#################10、给定一个字符串，找到字符串中第一个重复的字符
# str = "qweejjewsdssawaagg"
# str1 = list(str)
# print(str1)
# for i in str1:
#     if i == str1[str1.index(i)+1]:
#         break
#     else:
#         str1.remove(i)
#         continue
# print(i)


##################11、设么是pep8
# 针对的python代码格式而编订的风格指南,缩进是python的一大特点，对于每一个段落（level）的缩进，pep8给出的规范是4 spaces。
#其主要内容包括代码编排、文档编排、空格的使用、注释、文档描述、命名规范、编码建议等。


##################12、python里如何赋值，深拷贝与浅拷贝的区别
# 引用赋值
# 深拷贝：对所有的数据进行拷贝
# 浅拷贝：只对元素的最外层进行拷贝，当被拷贝的元素是可变数据类型时，是赋值拷贝，其id值不一样，
#        当被拷贝的元素是不可变数据类型时，是引用赋值，指向听一个引用，id值相同。
#        重新分配一块内存，创建一个新的对象，但里面的元素是原对象中各个子对象的引用。


##################13、简述python的内存管理机制
# python的引用机制分为三种：引用计数，垃圾回收，缓冲池
# 引用计数：每个对象都有指向该对象的引用总数，当该对象被使用一次时，引用计数就加一，当引用被撤销引用计数减一，当引用计数为零时该对象被回收
# 垃圾回收：分为分代回收和标记清除
#         分代回收：python将对象分为0，1，2三代，刚引用的对象为0代，存在的时间越长，为垃圾的可能性越低
# 缓冲池


##################14、使用python实现冒泡排序
# list1 = [1,3,6,24,6,34,7,2,56,235,8,2]
# for i in range(len(list1)-1,0,-1):
#     for j in range(i):
#         if list1[j] > list1[j+1]:
#             temp = list1[j]
#             list1[j] = list1[j+1]
#             list1[j+1] = temp
# print(list1)


##################15、使用python实现快速排序
# def quick_sort(list1):
#     if len(list1) < 2:
#         return list1
#     left, right = [], []
#     min = list1[len(list1)//2]
#     list1.remove(min)
#     for i in list1:
#         if i <= min:
#             left.append(i)
#         else:
#             right.append(i)
#     return quick_sort(left)+[min]+quick_sort(right)
#
# list1 = [68767,4,3,6,24,6,34,7,2,56,235,8,2,-5,231]
# qs = quick_sort(list1)
# print(qs)


##################16、输出九九乘法表
# for i in  range(1,10):
#     for j in range(i,10):
#         print(f"{i}*{j}={i*j}",end=" ")
#     print()


##################17、重复接受用户的数据，如果是正整数就输出结果，否则一直输入
# while True:
#     num = input("请输入一个正整数：")
#     if num.isdigit():
#         print(f"输入的整数为：{num}")
#         break
#     else:
#         print("输入的数值不是正整数，请重新输入！")


##################18、有两个列表[11,-3,4,5,2,1,8] , [9,3,4,2,6,-10] 把它们合并成一个列表，并且从小到大排序
# list1 = [11,-3,4,5,2,1,8]
# list2 = [9,3,4,2,6,-10]
# print(sorted(list2+list1))

###################19、a+=1 与 a=a+1 有什么区别
# 1,对于可变数据类型，两者都是在原内存地址进行操作，都是对原对象进行操作
# 2,对于不可变数据类型，都是会创建新的操作对象进行操作

# 简单的atm机系统
# import  decimal
#
# def caozuo():
#     num = int(input("输入1查询账户可用资金，输入2开始存钱，输入3取钱，输入4退出:"))
#     if num == 1:
#         chaxun()
#     elif num == 2:
#         cunqiang()
#     elif num == 3:
#         quqiang()
#     elif num == 4:
#         exit()
#
#
# def quqiang():
#     while True:
#         money = input("请输入需要取的钱款数目：")
#         global count
#         if float(money) <= float(count) and float(ATM_count) >= float(money):
#             count = float(count) - float(money)
#             print(f"取款成功，您当前账户剩余资金为：{count}")
#             break
#         elif float(money) > float(count):
#             print("账户存款不足，不能完成取款 请重新输入")
#         elif float(ATM_count) < float(money):
#             print("ATM钱款不足")
#     caozuo()
#
# def cunqiang():
#     while True:
#         c_money = input("请输入需要存的金钱数目：")
#         global  count
#         count = float(count) + float(c_money)
#         print(f"存钱成功，当前账户可用资金为：{count}")
#         num1 = int(input("输入1结束存钱，输入2继续存钱操作："))
#         if num1 == 1:
#             break
#         elif num1 == 2:
#             continue
#     caozuo()
#
# def chaxun():
#     global count
#     print(f"账户可用资金为：{count}")
#     caozuo()
#
#
# print("欢迎来到李璐家的银行".center(50,"="))
# name = input("输入账户名：")
# passwd = input("请输入账户密码：")
# count = 1000
# ATM_count = 10000
# if name == "root" and passwd == "123456":
#     print("登录成功，请开始你的操作！")
#     caozuo()
# else:
#     print("密码错误，请重新输入！")


